import Vue from 'vue'
import App from './App.vue'

// 导入三级联动组件 注册为全局组件
import TypeNav from './components/TypeNav/TypeNav.vue'

// 导入轮播图组件，注册为全局组件
import Carousel from './components/Carousel/Carousel.vue'

//  导入分页器
import Pagination from './components/pagination/Pagination.vue'
// 导入路由组件
import router from '@/router/router'
// 测试请求
// import { reqCategoryList } from '@/api/index'
// reqCategoryList()

// 引入 mockjs 模拟数据
import '@/mock/mockServe.js'

// 导入 vuex
import store from '@/store/store'

// 引入 swiper 轮播图的样式
import 'swiper/css/swiper.css'

// 引入 api 请求 统一管理api文件夹里面全部请求函数
import * as API from '@/api'
// console.log(API)

// 按需引入 element-uis
import { Button, MessageBox } from 'element-ui'

// 引入 懒加载
import VueLazyload from 'vue-lazyload'

// 引入自定义插件
import myPlugins from '@/plugins/myPlugins'

// 引入表单校验插件
import '@/plugins/validate'
//  注册全局
Vue.component(TypeNav.name, TypeNav)
Vue.component(Carousel.name, Carousel)
Vue.component(Pagination.name, Pagination)
Vue.component(Button.name, Button)
Vue.use(VueLazyload)
Vue.use(myPlugins, {
  name: 'upper'
})

// ElementUI注册组件的时候，还有一种写法，挂在原型上
Vue.prototype.$msgbox = MessageBox
Vue.prototype.$alert = MessageBox.alert

new Vue({
  render: h => h(App),
  router,
  store,
  // 全局事件总线
  beforeCreate () {
    Vue.prototype.$bus = this
    // 挂载到原型上
    Vue.prototype.$API = API
  }
}).$mount('#app')
